package fox.framework.rpc.context;

import fox.framework.rpc.client.RpcRegister;
import fox.framework.rpc.client.invocation.ConsumeInvoker;
import fox.framework.rpc.client.message.RpcClientRequestInterceptor;
import fox.framework.rpc.client.node.rule.RuleFactory;
import fox.framework.rpc.context.event.RpcEventListener;
import fox.framework.rpc.context.processor.RpcApplicationProcessor;
import fox.framework.rpc.converter.RpcMessageConverter;
import fox.framework.rpc.server.dispatcher.invoke.ProvideInvoker;

import java.util.List;
import java.util.Set;

/**
 * @author cuichao
 * @Description: RpcApplicationConfigurer
 * @Date: create in 2021/2/1 20:14
 */
public interface RpcApplicationConfigurer {
    /**
     * 应用名称
     * @return
     */
    String getApplicationName();
    /**
     * 获得服务端口
     * @return
     */
    int getPort();
    /**
     * 获得服务绑定的地址
     * @return
     */
    String getBind();
    /**
     * 获得全局默认Rpc传输协议
     * @return
     */
    String getGlobalProtocol();
    /**
     * 获得全局默认转换器名称
     * @return
     */
    String getGlobalConverterName();
    /**
     * 得的全局默认的分组
     * @return
     */
    String getGlobalGroup();
    /**
     * 获得服务注册中心
     * @return
     */
    RpcRegister getRegister();
    /**
     * 获得全局配置的负载均衡器工厂
     * @return
     */
    RuleFactory getGlobalRuleFactory();
    /**
     * 获得消息转换器
     * @return
     */
    List<RpcMessageConverter> getRpcMessageConverter();
    /**
     * 获得客户端请求拦截器
     * @return
     */
    List<RpcClientRequestInterceptor> getClientRequestInterceptors();
    /**
     * 获得生产者执行器
     * @return
     */
    List<ProvideInvoker>  getProvideInvokers();
    /**
     * 获得消费者执行器
     * @return
     */
    List<ConsumeInvoker>  getConsumeInvokers();
    /**
     * 获得应用处理器列表
     * @return
     */
    List<RpcApplicationProcessor> getApplicationProcessors();
    /**
     * 获取事件监听器
     * @return
     */
    Set<RpcEventListener> getRpcEventListeners();

}


